/* mikro.do --- 
 * 
 * Filename: mikro.do
 * Description: Mikro-Analysen Blauband 2009
 * Author: Kai Arzheimer
 * Created: Thu Jan 20 15:50:46 2011 (+0100)
 * Version: 1.0
 * Last-Updated: Fri Apr 20 17:10:52 2012 (+0200)
 * By: Kai Arzheimer
 *     Update #: 543
 * reads: prepost.dta
 * writes: Tabellen und Grafiken
 * Compatibility: 11.1
 * 
 */

/* Commentary: 
 * 
 * Mikro-Analysen BTW 2009. Basis: kombinierte Vor-/Nachwahlbefragung GLES
 * Majore �nderung: Recodes m�glichst alle auslagern
 */

/* Change log:
 * 
 * 
 */

/* Code: */


**************************/
* Initi-Code ausgelagert */
**************************/

do mikro-init



* Tabelle zum Vergleich PDS/Andere

*Wie baue ich die Tabelle? Statamatrix fuer Tabellenzellen
matrix t= 0,0,0,0
*Extra-Matrix fuer Fallzahlen
matrix n=0,0,0,0


* Dummies multiplizierne fuer Ausgabe als Prozentwerte
foreach v of varlist male abitur bildlow prekaer arbeitslos rentner arbeiter gewerkschaft linksid spdid grueneid anyid spdalternativ gruenealternativ{
	gen `v'100=`v'*100
}

foreach v of varlist male100 alter abitur100 bildlow100 prekaer100 arbeitslos100 rentner100 arbeiter100 gewerkschaft100 demozufr iwla iwlp gesungerecht prosozialismus skalolinks skalomerkel skalostein skalolafo skalogysi oeksalienz socoecspd socoeclinke  linksid100 spdid100 grueneid100 anyid100 spdalternativ100 gruenealternativ100 {
	qui summarize `v' if ost== 0 & linksparteiwahl == 1 [iw=ipfwwest]
	matrix zeile = round(r(mean)*1,.1)
	matrix nzeile = r(N)
	
	qui summarize `v' if ost== 0 & linksparteiwahl == 0 [iw=ipfwwest]
	matrix zeile = zeile,round(r(mean)*1,.1)
	matrix nzeile = nzeile, r(N)
	
	qui summarize `v' if ost== 1 & linksparteiwahl == 1 [iw=ipfwost]
	matrix zeile = zeile,round(r(mean)*1,.1)
	matrix nzeile = nzeile, r(N)

	
	qui summarize `v' if ost== 1 & linksparteiwahl == 0 [iw=ipfwost]
	matrix zeile = zeile,round(r(mean)*1,.1)
	matrix nzeile = nzeile, r(N)
	matrix t= t \ zeile
	matrix n= n \ nzeile
	}

* Erste Zeile mu� weg
matrix t= t[2..29,1..4]
matrix n= n[2..29,1..4]

*Umwandeln in Variablen
capture drop t1 t2 t3 t4
svmat t

capture drop n1 n2 n3 n4
svmat n

*Ok. Beschriftung fuer Zeilen bauen
capture drop zlabel
capture gen str zlabel = "    "

replace zlabel = "Anteil M�nner" in 1
replace zlabel = "Altersdurchschnitt" in 2
replace zlabel = "Anteil Abiturienten" in 3
replace zlabel = "Anteil Hauptsch�ler/ohne Abschlu�" in 4

replace zlabel = "Anteil prek�re Besch�ftigung" in 5
replace zlabel = "Anteil Arbeitslose" in 6
replace zlabel = "Anteil Rentner/Pension�re" in 7
replace zlabel = "Anteil Arbeiterschicht" in 8
replace zlabel = "Anteil Gewerkschaftsmitglieder" in 9

replace zlabel = "Mittelwert Demokratiezufriedenheit (1-5)" in 10
replace zlabel = "Mittelwert aktuelle indviduelle Wirtschaftslage (1-5)" in 11
replace zlabel = "Mittelwert prospektive Wirtschaftslage (1-5)" in 12

replace zlabel = "Mittelwert Gesellschaft ungerecht (1-5)" in 13
replace zlabel = "Mittelwert Sozialismusidee (1-5)" in 14

replace zlabel = "Mittelwert Skalometer Linkspartei (-5-+5)" in 15
replace zlabel = "Mittelwert Skalometer Merkel (-5-+5)" in 16
replace zlabel = "Mittelwert Skalometer Steinmeier (-5-+5)" in 17
replace zlabel = "Mittelwert Skalometer Lafontaine (-5-+5)" in 18
replace zlabel = "Mittelwert Skalometer Gysi (-5-+5)" in 19

replace zlabel = "Mittelwert Salienz sozio-�konomische Dimension (1-5)" in 20
replace zlabel = "Mittelwert sozio-�konomische Position SPD (1-11)" in 21
replace zlabel = "Mittelwert sozio-�konomische Position LINKE (1-11)" in 22

replace zlabel = "Anteil Identifikation LINKE" in 23
replace zlabel = "Anteil Identifikation SPD" in 24
replace zlabel = "Anteil Identifikation Gr�ne" in 25
replace zlabel = "Anteil Identifikation gesamt" in 26

replace zlabel = "Anteil SPD als Alternative" in 27
replace zlabel = "Anteil Gr�ne als Alternative" in 28

*Jetzt fehlen noch minimales/maximales N

replace zlabel = "N (min)" in 29
replace zlabel = "N (max)" in 30

forvalues v = 1/4 {
	qui summ n`v'
	replace t`v' = r(min) in 29
	replace t`v' = r(max) in 30
	}

*Tabelle ausgeben
*Grundlage f�r Ost-West-Tabelle.doc
listtex zl t1-t4 in 1/30 using pds-ost-west.txt, replace


*Was hier noch fehlt: evtl. Spalten fuer Verh�ltnisse/Differenzen



*Und die beiden Unterdimensionen
ttest socoeclinke ,by(ost)

* Ist das der Lafontaine?
ttest libautlinke ,by(ost)


* Bizarrerweise sind die Zusammenh�nge zwischen den drei Skalen schwach. Was tun?
bysort ost: corr libautlinke socoeclinke lrlinke [aw=ipfwges]

**************************************************************
* Ideologische Wahrnehmung der Partei
*************************************************************** 



*Grafiken f�r die Verortung der Partei und der W�hler kann man h�bsch in R machen, als zweidimensionale kernel density plots

* Oder besser als heatmap?
* http://flowingdata.com/2010/01/21/how-to-make-a-heatmap-a-quick-and-easy-solution/
* http://learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting/

*Keine Lust mich in R mit missing und subsetting zu qu�len
* Ben�tigt subsave
local nomissing = " socoeclinke != . & libautlinke != ."
subsave socoeclinke libautlinke if ost != 1 & linksparteiwahl == 1 & `nomissing' using stata-r-west-links , replace
subsave socoeclinke libautlinke if ost != 1 & linksparteiwahl == 0 & `nomissing' using stata-r-west-anders , replace
subsave socoeclinke libautlinke if ost == 1 & linksparteiwahl == 1 & `nomissing' using stata-r-ost-links , replace
subsave socoeclinke libautlinke if ost == 1 & linksparteiwahl == 0 & `nomissing' using stata-r-ost-anders , replace

*R aufrufen
shell R --vanilla <linkspartei-positions-plots.R

* Vielleicht besser als heatmap. Daf�r brauchen wir eine Matrix, die wir dann in R einlesen
* Vermutlich am einfachsten �ber den Zwischenschritt mit dem Datensatz

*Variablen fuer Transfer kreieren
foreach m of newlist mat1-mat11 {
	gen `m' = .
	}

* Den folgenden Code packen wir in eine Doppelschleife
*Aus Tabelle Stata-Matrix
* Matrix umsortieren so da� links/links unten links zu liegen kommt
* Durch Summe teilen und mit 100 multiplizieren, um auf Prozente zu kommen
* R�ckspielen ist hier sehr umst�ndlich

*Innerhalb der Schleife funktioniert die �bliche mata - end Konstruktion nicht
*Evtl. einfacher, das innerhalb von Stata mit plotmatrix zu machen?

forvalues o = 0/1 {

	forvalues l = 0/1 {
		tab socoeclinke libautlinke if ost==`o' & linksparteiwahl == `l' ,matcell(heatmatrix)
		mata:	heat = st_matrix("heatmatrix")
		mata:	heat = heat[11..1,]
		mata:	heat = heat / sum(heat) * 100
		mata:	st_store((1,11),("mat1", "mat2", "mat3","mat4","mat5","mat6","mat7","mat8","mat9","mat10","mat11"),heat)
			
		subsave mat1-mat11 in 1/11 using stata-r-matrix-`o'-`l', replace
		}
	
	}

*Hier noch mal ganz konventionell als Regression
reg libautlinke ost##linksparteiwahl



* Noch einfacherere Darstellung: Wieviel Prozent stufen die Partei auf mindestens einer der beiden Skalen rechts von der Mitte ein
* Logit nicht sehr aussagekr�ftig
logit linksparteikorrekt  ost linksparteiwahl 

replace linksparteikorrekt = linksparteikorrekt * 100
tabout ost linksparteiwahl using dummy.txt, replace sum c(mean linksparteikorrekt) ptotal(none)

* W�hler geben h�ufiger beide Antworten, Ost-West-Unterschied nicht signifikant
logit linkparteipositionkomplettmiss  ost linksparteiwahl 

* Wer glaubt, Bescheid zu wissen?

replace linkparteipositionkomplettmiss = linkparteipositionkomplettmiss * 100
tabout  ost linksparteiwahl using dummy.txt, replace sum c(mean linkparteipositionkomplettmiss)

* Spielt Ideologie keine Rolle, oder k�nnen W�hler mit den beiden Dimensionen nichts anfangen?

* Zusammenh�nge zwischen den Dimensionen (nochmal, haben wir oben schon). Ersch�tternd: n�herungsweise konsistent nur bei den Nicht-PDS-W�hlern im Osten

bysort ost linksparteiwahl: corr socoeclinke libautlinke lrlink

* das gleiche nochmal fuer SPD und/oder Gr�ne



* �konomisch haben wir oben schon
* Korrelationen sind genauso niedrig


***************************************************************
* Wirkung von PI in Ost und West
***************************************************************

*Hier brauchen wir etwas in dieser Art:
*tab wahl ost if linksid,col nofr
*bizarr f�r FDP: tab wahl ost if fdpi,col nofr
*Erstaunlich fuer SPD tab wahl ost if spdid,col nofr

foreach  v of varlist  *id {
	display "`v'"
	tab wahl ost if `v' [aw=ipfwges] , col nofr
	}




* Nicht alle w�hlen die richtige Partei
* Konditionales Logit-Modell mit ID mit dieser Partei, Distanz auf LRS
* Weitere Einstellungsvariablen
* Kontrollvariablen: Alter, Bildung, evtl. Berufsgruppe, Konfession?
* 
* Was tun mit Kandidaten? K�nnten wir einfach als personenspezifisch �bernehmen, oder?

* Konfession fehlt. lrs und ID m�ssen entsprechend numeriert werden. Wird das ein Problem f�r die Nichtw�hler?q


* MDS: Wahrnehmung 5 Parteien (Rep/NPD nicht erhoben), getrennt f�r Ost und West

* Variablen unter Namen ohne Skalo clonen fuer MDS-Plots
clonevar union = skalounion  
clonevar spd = skalospd    
clonevar fdp = skalofdp    
clonevar gruene = skalogruene 
clonevar links = skalolinks  



forvalues region = 0/1 {
	qui corr union - links if ost == `region'
	matrix R =r(C)
*Wir wollen die Labels erhalten
	local rnames : rownames R
	local cnames : colnames R

*MDS erwartet ein �hnlichkeitsma� zwischen 0-1
* Wir halbieren die Korrelationen und addieren 0.5
	matrix R=R*.5
	matrix pluseinhalb=J(5,5,.5)

*Labels von R �bernehmen
	matrix rownames pluseinhalb = `rnames'
	matrix colnames pluseinhalb = `cnames'
	matrix R=R+pluseinhalb

* MDS
	mdsmat R,shape(full) s2d(oneminus) noplot 
*Wie gro� ist der Stress?
	estat stress
*Plot mit variablem Titel
*Plots in Grafik-Verzeichnis exportieren
	mdsconfig, title("") note("")
	graph export "../blauband2009-figures/mds-`region'.eps", replace font("Times")
	estat config
	}


*Wieviele Leute mit beliebiger PID

* St�rke PID unterscheidet sich, aber Unterschiede sind borderline signifikant
svy: ologit strkpid i.ost 
margins ost,predict(outcome(1))

* Kreuztablle ausgeben
svy: tab   strkpid ost  ,col

* Nicht schlecht. Das m��te man jetzt in passende Matrix konvertieren
* und die dann mit listtex ausgeben. Problem: Matrix enth�lt erstmal die relativen
* Gesamth�ufigkeiten. Wenn ich diesen Code �fter brauche, mu� ich ihn
*  eindosen

buildcolrausvars

* Ich m�chte ganz allgemein das passende Label durchgehen und die Label in eine Variable schreiben
* Um die Tabellle am linken Rand zu beschriften
* Verschoben nach buildrowvar.aod

buildrowvar strkpid


* Jetzt m��ten wir noch zusammensetzen und mit outtable oder �hlichem ausgeben

listtex rowlab raus* in 1/5 using ../blauband2009-tabellen/staerke-pi.tex,rstyle(tabular) replace

* Verteilung von Identifikationen in Ost und West

svy: tab   pidmitkeine ost  ,col
buildcolrausvars
buildrowvar pid

* W�re sch�n, noch die Verh�ltniszahlen zu haben (mit ^-1 f�r Verh�ltnisse kleiner null).
* Mit sdecode geht das recht gut, aber mit string ist das noch einfacher
tempvar dummy
gen `dummy' = raus1/raus2
replace `dummy' = 1/(raus1/raus2) if raus1/raus2 <1 & ! missing(`dummy')
gen raus3=string(`dummy',"%2.1f")
* Originalwerte <1 mit LaTeX-Exponenten versehen
replace raus3= raus3 + "^-{}^1" if raus1/raus2 <1 & ! missing(`dummy')
* Dummerweise scheint rccol den Exponenten nicht zu verkraften, so da� ich auch noch dcolumn brauche
* Warum mu� die Notation so sein?
listtex rowlab raus* in 1/6 using ../blauband2009-tabellen/verteilung-pi.tex,rstyle(tabular) replace

* Modell f�r die pidwahl eher so?
svy: mlogit pidwahl ost##(abitur c.strkpid pid c.polint)

* Ausgabe geht ungef�hr so. W�re sch�n, die label hinzubekommen
* esttab . using test.tex,style(tex) drop(1b* *0b* *o.* Wahl_nach_PID:) subst(Wahl_entgegen_PID "Wahl entgegen PID") replace nolabel noabbrev

* So wird das fast ok
 esttab . using ../blauband2009-tabellen/mlogit-1.tex,style(tex) drop(1b* *0b* *o.* Wahl_nach_PID:) subst(Nichtwahl "\multicolumn{1}{c}{\mbox{Nichtwahl}}" Wahl_entgegen_PID "\multicolumn{1}{c}{\mbox{Wahl entgegen PI}}" _cons Konstante 1.pid "PI=Union" 2.pid "PI=SPD" 3.pid "PI=Gr�ne" 4.pid "PI=FDP" 5.pid "PI=Linke" 1.abitur Abitur 1.ost Ost c.polint "Interesse" polint "Interesse" c.strkpid "St�rke PI" strkpid "St�rke PI" Ost# "Ost$\times$") replace  alignment(D{.}{,}{-1})    unstack se nomtitle nogaps  nonumbers nolines nonotes

* Jetzt h�tten wir gerne ein eclplot. So geht das in die richtige Richtung

* margins  , predict(outcome(2)) at(strkpid=(0/4) )   over(pid) subpop(if !ost) vce(unconditional)
* vce(unconditional) ist konservativer, also gut. Statt subpop(ost) zu verwenden, k�nnen wir das auch in die over Bedingung packen
* SEs und interne Behandlung sind gleich. Interaktionen werden wohl korrekt ber�cksichtigt
* In diesen Breitengraden sollten die Konfidenzintervalle eigentlich nicht mehr symmetrisch sein. Scheint margins aber nicht zu st�ren
* Hier ist f�r Logit erkl�rt, wie es richtig ginge. nlcom w�re wohl noch eine Alternative. F�r mlogit ist mir das zuviel Gehutzel.
* http://www.stata.com/statalist/archive/2010-07/msg01598.html
* Falls ich es doch machen m�chte, mu� ich eine andere Basiskategorie (Nichtwahl nehmen) 
margins  , predict(outcome(2)) at(strkpid=(0/4) )   over(ost pid) subpop() vce(unconditional) post

parmest,format(estimate min95 max95 %8.2f p %8.1e) saving(mlogit1-parm,replace)

*Parameterset laden
use mlogit1-parm,replace
* Wir m�ssen die Parametermatrix rekonstruieren
seq strkpid, f(0) t(4) b(10)
lab var strkpid "St�rke PI"
* Einfacher mit seq-Kommando von Cox
seq ost, f(0) t(1) b(5)
lab def ost 0 "West" 1 "Ost"
lab val ost ost
seq pid, f(1) t(5) b(1)
label define pid 1 `"PI = Union"' 2 `"PI = SPD"' 3 `"PI = Gr�ne"' 4 `"PI = FDP"' 5 `"PI = Linke"'
lab val pid pid
* Balken f�r Ost und West etwas separieren
replace strkpid = strkpid + .25 if ost

set scheme s1mono
* Rahmen soll weg - > Trick http://www.stata.com/statalist/archive/2007-08/msg00190.html
eclplot estimate min95 max95 strkpid  ,supby(ost) by(pid,note("") ixaxes)  legend(region(lwidth(none)))  ytitle("Wahrscheinlichkeit PI-konforme Wahl") ylabel(#3, format(%9.1f)) 
graph export ../blauband2009-figures/mlogit1.eps,replace  font("Times")

use prepost,replace

* Brachiales End-Modell: ungef�hr so:
*svy:mlogit wahl2 ost##(c.*idme* c.lrsz c.skalomerkel c.skalostein c.skalolafo c.skalogysi c.skalowesterwelle c.skalokuenast abitur c.polint),base(6)
* Skalometer f�r Gysi/Lafo und Merkel/Guttenberg korrelieren in Ost und West jeweils im Bereich von 0.6 -.7. W�re sinnvoll, das zusammenzufassen, �hnlich wie bei Position (Ost/West bzw. Bayern/Rest)

* Ost brauch anderes Label
lab def ost 0 "West" 1 "Ost"
lab val ost ost

* Grafik: Zusammenhang LRS und Kandidatensymapthien nach Ost und West

* In Grafiken nur 10% der F�lle darstellen. Im Osten 30%
gen select = uniform()>=.9 if !ost
replace select = uniform()>=.8 if ost
local skalolrssubgraphnr = 1
set scheme s1mono
graph drop _all

foreach var of varlist skalomerkelgutt skalostein  skalowesterwelle skalokuenast skalogysilafo  {
	local yvar : variable label `var'
	graph twoway (scatter `var' lrsz if select , jitter(6) mcolor(gray) msymbol(Oh)) (lowess `var' lrsz,lwidth(thick) lcolor(black)) ,  by(ost,legend(off) note("")) ytitle("`yvar'") xtitle("")
	graph rename skalosubgraph`skalolrssubgraphnr', replace
	local skalolrssubgraphnr = `skalolrssubgraphnr' + 1
	}

local xtitle : var lab lrsz
graph combine skalosubgraph1 skalosubgraph2 skalosubgraph3 skalosubgraph4 skalosubgraph5,row(2) imargin(8 1 0 0) b1title("`xtitle'",size(vsmall))
graph export ../blauband2009-figures/skalometer-lrs.eps, replace font("Times")



* Gleiches Spiel noch mal f�r die metrischen PIs
* Variablen brauchen k�rzere Label

lab var linksidmetr    "Parteiidentifikation Linkspartei"
lab var spdidmetr      "Parteiidentifikation SPD"
lab var unionidmetr    "Parteiidentifikation Union"
lab var fdpidmetr      "Parteiidentifikation FDP"
lab var grueneidmetr   "Parteiidentifikation Gr�ne"

lab var lrsz "Links-Rechts-Selbsteinstufung (zentriert)"

local pisubgraphnr = 1
set scheme s1mono
graph drop _all

foreach var of varlist unionidmetr spdidmetr fdpidmetr grueneidmetr linksidmetr  {
	local yvar : variable label `var'
	graph twoway (scatter `var' lrsz if select , jitter(6) mcolor(gray) msymbol(Oh)) (lowess `var' lrsz,lwidth(thick) lcolor(black)) ,  by(ost,legend(off) note("")) ytitle("`yvar'") xtitle("") ylabel(0 5) ytick(0/5,grid) yscale(range(0 5))
	graph rename pisubgraph`pisubgraphnr', replace
	local pisubgraphnr = `pisubgraphnr' + 1
	}

local xtitle : var lab lrsz
graph combine pisubgraph1 pisubgraph2 pisubgraph3 pisubgraph4 pisubgraph5,row(2) imargin(8 1 0 0) b1title("`xtitle'",size(vsmall)) ycommon
graph export ../blauband2009-figures/pi-lrs.eps, replace font("Times")

* Weil es so sch�n ist, noch einen Boxplot zur LRS

graph box lrsz,over(ost) horizontal
graph export ../blauband2009-figures/lrsz-box.eps, replace font("Times")


* Da Monsta:
svy:mlogit wahl2 ost##(c.*idme* c.lrsz c.skalomerkelgutt c.skalostein c.skalogysilafo c.skalowesterwelle c.skalokuenast abitur c.polint),base(6)
est store damonsta
* Gleich noch auf Platte
est save damonsta,replace


* Konfidenzintervalle, die null einschlie�en. Doch forschen?. Nein, scheint mit vetretbarem Aufwand nicht zu gehen
* 
* margins ,expression(predict(xb,outcome(1)) ) at(lrsz=(0)) vce(unconditional) subpop(if !ost)

* Unterschiede bei den Ungebundenen? �ber alle f�nf Parteien + Nichwahl

forvalues party = 1/6 {
	est restore damonsta
	margins ost,predict(outcome(`party')) at(lrsz=(-4 -2 0 2 4) (zero) linksidmetr spdidmetr unionidmetr fdpidmetr grueneidmetr) vce(svy) post
	parmest,format(estimate min95 max95 %8.2f p %8.1e) idn(`party') saving(mlogit2-`party'-parm,replace)
	}



* Pro-Forma: Ausgabe
esttab . using ../blauband2009-tabellen/mlogit-2-raw-a.tex,style(tex) drop(nicht_andere:) subst(  _cons Konstante 1.abitur Abitur 1.ost Ost "c." "" c.polint "Interesse" polint "Interesse" c.strkpid "St�rke PI" strkpid "St�rke PI" Ost# "Ost$\times$" "&       union         &         spd         &      gruene         &         fdp         &       linke " `"& \multicolumn{1}{c}{Union} & \multicolumn{1}{c}{SPD} & \multicolumn{1}{c}{Gr"une} & \multicolumn{1}{c}{FDP} & \multicolumn{1}{c}{Linke}"' spdidmetr "PI: SPD" unionidmetr "PI: Union" fdpidmetr "PI: FDP" grueneidmetr `"PI: Gr"une"' linksidmetr "PI: Linke" lrsz LRS skalomerkelgutt "Merkel/Guttenberg" skalostein "Steinmeier" skalogysilafo "Gysi/Lafontaine" skalowesterwelle "Westerwelle" skalokuenast `"K"unast"' ) replace  alignment(D{.}{,}{-1})    se nomtitle nogaps  nonumbers nolines nonotes longtable unstack nodropped

shell ./format-mlogit2.sh	


* Wir brauuchen noch eine Grafik bzw Serie von Marginal-Plots
* Das machen wir analog zu mlogit1 plot oben. Allerdings m�ssen wir Daten kombinieren
use mlogit2-1-parm.dta,clear
forvalues p = 2/6 {
  append using mlogit2-`p'-parm
}
* Ost-Variable definieren
seq ost ,f(0) t(1)
lab def ost 0 "West" 1 "Ost"
lab val ost ost
* LRS-Variable definieren
seq lrs,f(1) t(5) b(2)
recode lrs (1=-4) (2=-2) (3=0) (4=2) (5=4)
* Im Osten verschieben f�r Plot
replace lrs = lrs + .25 if ost
* Partei
clonevar party=idnum
label define party 1 `"Union"' 2 `"SPD"' 3 `"Gr�ne"' 4 `"FDP"' 5 `"Linke"' 6 `"Nichtwahl/andere"'
lab val party party
set scheme s1mono
graph  set print logo off
eclplot estimate min95 max95 lrs   ,supby(ost) by(party,note("")) legend(region(lwidth(none))) ytitle("Wahlwahrscheinlichkeit") ylabel(,format(%9.1f)) xtitle("Links-Rechts-Selbsteinstufung")
graph export ../blauband2009-figures/mlogit2.eps,replace font("Times")




*Das gleiche noch mal �ber alle W�hler?
* Wir sehen keine signifikanten Ost-West-Unterschiede

/* forvalues party = 1/6 { */
/* 	est restore damonsta */
/* 	margins ost,predict(outcome(`party')) at(lrsz=(-4 -2 0 2 4) ) vce(svy) post */
/* 	parmest,format(estimate min95 max95 %8.2f p %8.1e) idn(`party') saving(mlogit3-`party'-parm,replace) */
/* 	} */

/* use mlogit3-1-parm.dta,clear */
/* forvalues p = 2/6 { */
/*   append using mlogit3-`p'-parm */
/* } */
/* * Ost-Variable definieren */
/* seq ost ,f(0) t(1) */
/* lab def ost 0 "West" 1 "Ost" */
/* lab val ost ost */
/* * LRS-Variable definieren */
/* seq lrs,f(1) t(5) b(2) */
/* recode lrs (1=-4) (2=-2) (3=0) (4=2) (5=4) */
/* * Im Osten verschieben f�r Plot */
/* replace lrs = lrs + .25 if ost */
/* * Partei */
/* clonevar party=idnum */
/* label define party 1 `"Union"' 2 `"SPD"' 3 `"Gruene"' 4 `"FDP"' 5 `"Linke"' 6 `"Nichtwahl/Andere"' */
/* lab val party party */
/* set scheme s1mono */
/* graph  set print logo off */
/* eclplot estimate min95 max95 lrs   ,supby(ost) by(party,note("")) legend(off) ytitle("Wahlwahrscheinlichkeit") ylabel(,format(%9.1f)) xtitle("Links-Rechts-Selbsteinstufung") */
/* graph export ../blauband2009-figures/mlogit3.eps,replace */



*Null-Koeffizienten  am besten mit grep entfernen. Kopfzeile schon ausgetauscht. Anweisungen am besten in ein skript, das von Stata aufgerufen werden kann. 

* Kann ich das mit nested logit machen? Politisches Interesse sollte schon rein

* case2alt , case(lfd) choice(wahl2) alt(lrdist) gen(votechoice)  altnum(partyvote) casevars(altd2 altd3 altd4 male ost ipfwges skalomerkel abitur bildlow prekaer arbeitslos gewerkschaft )

* nlogit sieht gut aus. Noch mal bei thurner-eymann-2000 nachlesen, wie die Nichtwahl behandelt haben.
* w�rde heiss-2002.pdf helfen?
*  nlogit chosen    || type: income kids, base(family) ||restaurant: distance, noconstant case(family_id) constraints(1 2 3 4 5 6) collinear
* Es geht mit constraints und dummy Werten f�r die 

* In die Richtung mu� es gehen
* asclogit votechoice if ost   ,case(lfd) alternatives(partyvote) base(6) casevars(id1 id2 id3 id4 id5)
* Problem: f�r Option 6 gibt es nat�rlich keine Distanz. Wie bekommen wir das im Modell unter?
* Oder sollen wir mlogit machen

* asclogit votechoice lrdist    ,case(lfd) alternatives(partyvote) base(5) casevars(male)

exit,clear

/*  mikro.do ends here */
